Data communication systems conventionally employ a transmitter at the source or sending location and a data receiver at the destination or receiving end. In order to maintain synchronization of the data signal between the source and destination it is common to transmit, with the data signal, a timing reference generated by the transmitter. The data receiver uses this reference signal to synchronize its local clock (receiver clock).
Symbol synchronization or timing recovery is an important aspect of data communication systems. Typically, the receiver clock is adjusted constantly so that the sampling position is always optimized at the point where the data detection signal-to-noise ratio (SNR) is maximized and the data eye is opened wide. The clock adjustment should also be made often enough so that the local clock can always track any change of the reference clock. On the other hand, constant changing of the local clock can make the local data transmission very unstable, and cause a jitter movement, i.e. the local data transmission rate varies around the nominal rate. Timing jitter on the receive clock has a significant influence on system performance.
A commonly used procedure in timing recovery systems is to estimate the pre-cursor, which represents the interference of the next future bit to the current receiving bit, using a correlation method. The sampling location is set at the point where the ratio between the main tap (the desired signal amplitude) and the pre-cursor is equal to a certain value. The correlation is often calculated by averaging a certain number of samples in a time window. Because the timing should be adjusted fast enough to track the timing variation, the averaging window for the correlation estimation cannot be too large as otherwise it will not give an accurate estimation of pre-cursor. The jitter stabilization is limited by the averaging window length, which further depends on the frequency offset between the reference clock frequency and the frequency of the local clock.
In the present invention, the timing location is estimated accurately so that the jitter is stabilized. A simple one tap Least Mean Square (LMS) algorithm is used for the pre-cursor estimation. The estimation is then used to set a dead zone around the desired timing location. The timing is updated only if the signal is outside of the dead zone. Therefore, only noise which is large enough to move the sampling location out of the dead zone can cause jitter movement. As a result, jitter is reduced and in the system simulations, no jitter movement has been observed.
Many timing recovery methods have been used previously in data communications systems. The most common one is to first estimate the pre-cursor a.sub.-1 and then set the timing location to where the value a.sub.-1 is at a certain level below the main tap a.sub.0. If the pre-cursor is too small, the local clock should slow down. Otherwise, it should speed up. To keep up with the reference clock frequency, the local clock should be adjusted constantly, either to slow down or to speed up. The constant adjustment will make the local clock very unstable and a large jitter may be introduced, especially when SNR is low.
In most applications, the pre-cursor is estimated by calculating the correlation between the two adjacent bauds or symbols. To track the frequency offset between the local clock and the reference clock, the timing adjustment should be made often and hence not enough bauds can be used for the average in the correlation calculation. In many cases, only 10 to 100 bauds may be available for the averaging calculation. As a result, the pre-cursor tends to be very inaccurate, especially under a noisy environment. This will make the recovered clock very unstable and hence cause a large jitter movement in the local data transmission.
It will be apparent that more input data will give a more accurate pre-cursor estimation. Also, the pre-cursor estimation should be output sufficiently often to track the reference clock. One way to accomplish both the accuracy and the output rate of the pre-cursor estimate is to recursively change the pre-cursor estimation with every sample input by using the information of all previous data. The problem with this adaptive algorithm is that the future bit is not yet available.